package com.fy.fyspace.common.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 监控配置类
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "monitor")
public class MonitorConfig {

    /**
     * 是否启用监控
     */
    private boolean enabled = true;

    /**
     * 监控数据保留时间（小时）
     */
    private int dataRetentionHours = 24;

    /**
     * 告警阈值配置
     */
    private AlertThreshold alertThreshold = new AlertThreshold();

    /**
     * 性能监控配置
     */
    private Performance performance = new Performance();

    @Data
    public static class AlertThreshold {
        /**
         * 内存使用率告警阈值（百分比）
         */
        private double memoryUsageThreshold = 85.0;

        /**
         * 线程池使用率告警阈值（百分比）
         */
        private double threadPoolUsageThreshold = 80.0;

        /**
         * 系统负载告警阈值（百分比）
         */
        private double systemLoadThreshold = 70.0;

        /**
         * 错误率告警阈值（百分比）
         */
        private double errorRateThreshold = 5.0;
    }

    @Data
    public static class Performance {
        /**
         * 是否启用性能监控
         */
        private boolean enabled = true;

        /**
         * 性能数据采样间隔（秒）
         */
        private int samplingIntervalSeconds = 60;

        /**
         * 是否启用API调用统计
         */
        private boolean apiStatisticsEnabled = true;

        /**
         * 是否启用错误日志统计
         */
        private boolean errorLogStatisticsEnabled = true;
    }
} 